package org.example.top40;

public class main02 {
    //手写LRU
    //初始化双向链表 key value pre tail
    //构造方法 链表长度 容量 虚拟头尾节点 map<Integer,Dlistnode> 传入容量，初始化节点长度和虚拟节点
    //get 方法 key-> node(!=null) ->moveToHead(node) ->node.value
    /**
     * put 方法 key,value ->
     * node(==null) ->newNode->map.put(key,newNode)和addToHead和size++ ->size>容量 res=removeLast->map.remove(res.key)
     * node!=null ->node.value=vlaue->moveTohead
     */
    //addToHead node张开双手，两肋插刀，先右后左 1
    //removeNode node前面的人的手拉住node后面的人 node后面的人的手拉住node前面的人 2
    //moveToHead 2->1
    //DListNode removeTail() 记录 tail.pre ->2
    public static void main(String[] args) {
        LRUCache cache = new LRUCache(3);
        cache.put(1,10);
        cache.put(2,20);
        cache.put(3,30);
        cache.put(1,11);
        cache.put(5,50);
        cache.put(1,12);
        System.out.println(cache.get(2));
        System.out.println(cache.get(3));
        System.out.println(cache.get(1));
    }
}
